package cn.hahah.module.blog.app.service;

import cn.hahah.framework.common.pojo.CommonResult;
import cn.hahah.framework.common.pojo.PageResult;
import cn.hahah.module.blog.controller.admin.article.vo.ArticlePageReqVO;
import cn.hahah.module.blog.controller.admin.article.vo.ArticleRespVO;
import cn.hahah.module.blog.controller.admin.article.vo.ArticleSaveReqVO;
import cn.hahah.module.blog.controller.admin.articletag.vo.ArticleTagSaveReqVO;
import cn.hahah.module.blog.controller.admin.usercollect.vo.UserCollectSaveReqVO;
import cn.hahah.module.blog.controller.admin.usercomment.vo.UserCommentSaveReqVO;
import cn.hahah.module.blog.controller.admin.userfocus.vo.UserFocusSaveReqVO;
import cn.hahah.module.blog.controller.admin.userfriend.vo.UserFriendSaveReqVO;
import cn.hahah.module.blog.controller.admin.userreply.vo.UserReplySaveReqVO;
import cn.hahah.module.blog.controller.admin.users.vo.UsersPageReqVO;
import cn.hahah.module.blog.controller.admin.users.vo.UsersRespVO;
import cn.hahah.module.blog.dal.dataobject.article.ArticleDO;
import cn.hahah.module.blog.dal.dataobject.userdialogue.UserDialogueDO;
import cn.hahah.module.blog.dal.dataobject.userhistorybrowse.UserHistoryBrowseDO;
import cn.hahah.module.blog.dal.dataobject.users.UsersDO;

import java.util.List;

public interface BlogUserService {

    /**用户_修改个人信息*/
    public CommonResult<UsersRespVO> userSet(Long userId, UsersPageReqVO usersPageReqVO);

    /**用户_发布文章*/
    public CommonResult<String> userCreateArt(ArticleSaveReqVO articleSaveReqVO);

    /**用户_编辑文章*/
    public CommonResult<String> userUpdateArt(ArticleSaveReqVO articleSaveReqVO);

    /**用户_查看个人文章*/
    public CommonResult<PageResult<ArticleRespVO>> getUserArtPage(ArticlePageReqVO articlePageReqVO);

    /**用户_删除个人文章*/
    public CommonResult<String> delUserArtPage(Long userId, Long articleId);

    /**用户_查看个人收藏文档*/
    public CommonResult<List<ArticleRespVO>> getUserCollectArt(ArticlePageReqVO articlePageReqVO);

    /**用户_取消收藏文档*/
    public CommonResult<String> unCollectArt(Long userId, Long articleId);

    /**用户_收藏文章*/
    public CommonResult<String> collectArt(Long userId, Long articleId);

    /**用户_点赞文章*/
    public CommonResult<String> likeArt(Long userId, Long articleId);

    /**用户_设置文章分类*/
    public CommonResult<String> setArticleType(Long userId, Long articleId, Long typeId);

    /**用户_设置文章标签*/
    public CommonResult<String> setArticleTag(Long userId, Long articleId, List<Long>  selectTagId);

    /**用户_根据用户查找关注*/
    public CommonResult<List<UsersDO>> getUserFocusById(Long userId);

    /**用户_关注用户*/
    public CommonResult<String> userFocus(UserFocusSaveReqVO userFocusSaveReqVO);

    /**用户_取消关注用户*/
    public CommonResult<String> unFocusUserById(Long userId, Long focusId);

    /**用户_评论文章*/
    public CommonResult<String> commentArt(UserCommentSaveReqVO userCommentSaveReqVO);

    /**用户_回复评论*/
    public CommonResult<String> replyComment(UserReplySaveReqVO userReplySaveReqVO);



    /**用户_添加好友*/
    public CommonResult<String> addFriend(Long userId, Long friendId);

    /**用户_查找用户好友*/
    public CommonResult<List<UsersDO>> getFriendByUser(Long userId);

    /**用户_查找好友请求*/
    public CommonResult<List<UsersDO>> getFriendReq(Long userId);

    /**用户_同意好友请求*/
    public CommonResult<String> agreeFriendRea(Long userId, Long friendId);

    /**用户_拒绝好友请求*/
    public CommonResult<String> rejuctFriendRea(Long userId, Long friendId);

    /**用户_删除好友*/
    public CommonResult<String> delFriend(Long userId, Long friendId);

    /**用户_查找用户历史*/
    public CommonResult<PageResult<ArticleDO>> browseHistory(Integer pageNo, Integer pageSize, Long userId);

    /**用户_用户对话*/
    public CommonResult<List<UserDialogueDO>> userDialogue(Long userId, Long targetUserId);

    /**用户_获取聊天列表*/
    public CommonResult<List<UsersDO>> getUserDialogue(Long userId);

    /**用户_获取聊天记录*/
    public CommonResult<List<UserDialogueDO>> getDialogues(Long groupId);

    /**用户_发送消息*/
    public CommonResult<String> sendMessage(Long userId, Long groupId, String content);

}
